$(function() {
	var User = {
		initUserGrid:function()
		{
			function beforeSelectRow()  
		    {  
		        $("#grid_area").jqGrid('resetSelection');  
		        return true;  
		    }
			var userGrid = $("#grid_area").jqGrid({
		        url:ctxPath + "/user/getPageInfo.do",//查询列表接口，默认查询未作废用户
		        datatype : "json",
		        beforeSelectRow: beforeSelectRow,//js方法 
		        colNames:['id','用户号','用户姓名','角色','用户状态'],//,'工作状态'
		        colModel:[
		              {name:'id', hidden:true},
		              {name:'user_code', index:'user_code', width:'40'},
		              {name:'user_name',index:'user_name', width:'40'},
		              {name:'role_names',index:'role_names', width:'40'},
		              {name:'status',index:'status', width:'40',
		            	  formatter : 'select',editoptions : {value : '1:启用;2:停用' }
		              }
		        ],
		        shrinkToFit:true,  //true 按比例初始化列宽   false 使用指定的固定列宽
		        viewrecords : true,
		        pager: '#page_area'
		    });
			$('#cb_grid_area').hide();// 隐藏全选/反选多选框
			return userGrid;
		}
	};
	
	
	//表头居中
	$(".ui-jqgrid-sortable").css("text-align","center");

	/**
	 * 初始化
	 */
	User.initUserGridAndData = function(){
		fms.InitSingleSelectByStatic({id:"status",data:fms.constants.SELECT.STATUS});
		User.userGrid = User.initUserGrid();//初始化用户列表
	}
	User.initUserGridAndData();
	 /**
     * 重置查询条件
     */
    $("#gotoReset").on("click", function(){
    	// 重置输入框
        $('#search_form').resetForm();
        // 重置下拉框
        $("#status option:first").prop("selected", 'selected')
        $('#status').trigger('change.select2');
    });
    
    /**
     * 执行查询
     */
    $("#gotoSearch").on("click", function(){
//    	var status = $('#search_level').val();
		var status = $('#status').val();
		User.userGrid.setGridParam({
			postData : {
				'user_name' : $('#user_name').val(),
				'user_code' : $('#user_code').val(),
				'status' : status == "-1" ? null : status
			},
			page : 1
		});
		User.userGrid.trigger("reloadGrid");
    });
    
    /**
     * 删除当前选中的用户
     */
    $("#user_delete").on("click", function(){
    	var id = User.userGrid.getGridParam('selrow');// 获取选中项id
    	if(!id){// 没有选中修改项
    		fms.ShowMsg({msg:"请在列表中选择一个删除项!",icon:0});
    		return;
    	}
    	// 确认提示框
    	layer.confirm('是否删除该用户信息？', {btn: ['删除','取消']}, function(){
    		$.ajax({// 根据用户主键id查询用户信息
    			type : "POST",
        		dataType:"json",      
                contentType:"application/json",   
        		traditional:true,
        		data : JSON.stringify({'status':0,'userList':[{'id':id}]}),
           		url : ctxPath + "/user/delete.do",
    			success : function(data) {
    				if(data && data.status == "SUCCESS"){// 删除成功
    					fms.ShowMsg({msg:"删除用户信息成功。", icon:1});
        				User.userGrid.trigger("reloadGrid");// 重新加载列表
    				}else{// 删除失败
    					fms.ShowMsg({msg:"删除用户信息失败，请稍后再试。", icon:2, data:data});
    				}
    			},
    			error : function(data){
    				fms.ShowMsg({msg:"删除用户信息失败，请稍后再试。",icon:2, data:data});
    			}
    		});
		}, function(){
		});
    });
    
    /**
     * 重置当前选中的用户密码
     */
    $("#user_reset_pwd").on("click", function(){
    	var id = User.userGrid.getGridParam('selrow');// 获取选中项id
    	if(!id){// 没有选中修改项
    		fms.ShowMsg({msg:"请在列表中选择需要重置的项!",icon:0});
    		return;
    	}
    	// 确认提示框
    	layer.confirm('是否重置该用户的密码？', {btn: ['确认','取消']}, function(){
    		$.ajax({// 根据用户主键id查询用户信息
    			type : "POST",
        		dataType:"json",      
        		data : {'id':id},
           		url : ctxPath + "/user/resetPwd.do",
    			success : function(data) {
    				if(data && data.status == "SUCCESS"){// 修改成功
    					fms.ShowMsg({msg:"重置用户密码成功", icon:1});
        				User.userGrid.trigger("reloadGrid");// 重新加载列表
    				}else{// 删除失败
    					fms.ShowMsg({msg:"重置用户密码失败，请稍后再试。", icon:2, data:data});
    				}
    			},
    			error : function(data){
    				fms.ShowMsg({msg:"重置用户密码失败，请稍后再试。",icon:2, data:data});
    			}
    		});
		}, function(){
		});
    });
    
    /**
     * 保存或修改用户信息
     */
    User.initSaveOrUpdatePage = function(param){
    	$("#userCode").val(param.user_code);
    	$("#userName").val(param.user_name);
    	// 初始化工作状态下拉框
    	fms.InitSingleSelectByStatic({id:"user_status_select",data:fms.constants.SELECT.SELECT_STATUS,value:param.status});
		// 获取所有可用的角色
    	window.fms.InitMultSelect({
			id:"role_ids_select",
		 	url:ctxPath + "/role/getRoleList.do",
			value:param.role_ids,
		 	option:{id:"id",text:"name"}
		 });
		$('#user_phone').val(param.phone);
		$('#user_email').val(param.email);
    	
    }
    
    /**
     * 保存或修改
     */
    User.saveOrUpdate = function(param){
    	var isValid = $("#addOrUpdateUserForm").valid();
    	if(!isValid){return;}
    	var isMutiSelectValid = fms.MutiSelectsValidate([
	    	{id:"role_ids_select",msg:"请选择一个角色。",validate:$("#role_ids_select option:selected").length == '1'},
    	]);
    	if(!isMutiSelectValid){// 多选下拉框校验不通过
    		return;
    	}
    	//loading层
		var mark = layer.load(1, {
    		shade: [0.4,'#ffe'], //0.1透明度的白色背景
    		success:function(){
		    	var user = {};
		    	var userID = param.id || window.fms.guid();
		    	var roles= [];
		    	var grantCenters= [];
		    	var busiAuth = "";
				$.each($("#addOrUpdateUserForm").serializeArray(), function (i, v) {
					user[v['name']] = v['value'];
		        });
		        $.each($("#role_ids_select option:selected"), function (i, v) {
					roles.push({id:window.fms.guid(),roleId:v.value,userId:userID})
		        });
		        user.id= userID;
		        user.roleList = roles;
		        user.oprDate=new Date();
		        //user.status=1;//是否删除，0：代表假删除
		        //返回下拉value值
		        user.orgCode = $("#areaSel").attr("code");
		    	$.ajax({
		    		type : "POST",
		    		dataType:"json",      
		            contentType:"application/json",   
		    		traditional:true,
		    		data : JSON.stringify(user),
		       		url : param.url,
					success : function(data) {
						layer.msg("保存成功！", {icon : 1,time : 1000}, 
								function(index) {
									layer.close(mark);
									layer.close(index);
									layer.close(param.layer);
									User.userGrid.trigger("reloadGrid");
								});
						},
						error : function(data){
							layer.msg("数据异常！", {
								icon : 1,
								time : 2000
							}, function(index) {
								layer.close(index);
								layer.close(param.layer);
								User.userGrid.trigger("reloadGrid");
							});
						}
				});
			}
		});
    }
    
     /**
     * 后台校验
     */
    User.userFormValidate = function(param){
    	$("#addOrUpdateUserForm").validate({// 表单校验规则
			rules : {
				userCode : {
					required : true,
					maxlength : 12,
					digits:true ,
					remote : fms.RemoteValidate({url:ctxPath + "/user/validateUser.do",data:param.userCodeData})
				},
				userName : {required : true,maxlength : 30},
				phone : {required : false,isPhone :  $("#user_phone").val()},
				email : {required : false,email : true}
			},
			messages : {
				userCode : {
					required : "请输入用户号！&emsp;",
					digits:"用户 号必须是数字",
					maxlength : "用户号，最多输入12个字符！&emsp;",
				    remote : "用户号重复！&emsp;"
				},
				userName : {
					required : "请输入用户姓名！&emsp;",
					maxlength : "用户姓名，最多输入30个字符！&emsp;"
				},   
				
				email : {
					email : "请输入正确的电子邮箱地址！&emsp;"
				}
			},
			errorLabelContainer : $("#addOrUpdateUserForm div.error")
		});
    }

    /**
     * 新增用户信息
     */ 
    $("#user_add").on("click", function(){
		$.get(ctxPath + '/user/goSaveOrUpdate.do', {}, function(content){
		    var add_layer = layer.open({
		        title: "添加用户",
		        type: 1,
		        content: content,
		        area : ['820px', '520px'],
		        offset: '0px',
		        zIndex:'100',// 垂直高度
		        btnAlign: 'r',
		        btn: ['保存', '取消'],
		        maxmin: true, //允许最大化
		        yes: function(index, layero){// 点击保存调用方法
		        	User.saveOrUpdate({layer:add_layer,url:ctxPath + "/user/save.do"});
		        },
		        success: function(layero, index){
		        	User.initSaveOrUpdatePage({});// 初始化新增或更新页面
		            //表单校验规则
		        	User.userFormValidate({
		        		userCodeData:{userCode:function(){return $("#userCode").val();}},
		        	});
		        }
		   });
		});
    });
    
     /**
     * 修改用户信息
     */ 
    $("#user_edit").on("click", function(){
    	var id = User.userGrid.getGridParam('selrow');// 获取选中项id
    	if(!id){// 没有选中修改项
    		fms.ShowMsg({msg:'请在列表中选择一个修改项!', icon:0});
    		return;
    	}
    	$.ajax({// 根据用户主键id查询用户信息
    		type : "post",
    		dataType:"json",      
    		data : {'userId':id},
    		async : false,// 同步
       		url : ctxPath + "/user/getUserInfoById.do",
			success : function(data) {
				$.get(ctxPath + '/user/goSaveOrUpdate.do', {}, function(content){
				    var update_layer = layer.open({
				        title: "修改用户",
				        type: 1,
				        content: content,
				        area : ['820px', '520px'],
				        offset: '0px',
				        zIndex:'100',// 垂直高度
				        btnAlign: 'r',
				        btn: ['保存', '返回'],
				        maxmin: true, //允许最大化
				        yes: function(index, layero){// 点击保存调用方法
				        	User.saveOrUpdate({layer:update_layer,id:id,url: ctxPath + "/user/update.do"});
				        },
				        success: function(layero, index){
				        	User.initSaveOrUpdatePage(data);// 初始化新增或更新页面
				        	//表单校验规则
				        	User.userFormValidate({
				        		userCodeData:{id:id,userCode:function(){return $("#userCode").val();}},
				        	});
				        }
				   });
				});
			},
			error : function(data){
				fms.ShowMsg({msg:"获取用户信息失败，请稍后再试。", icon:2, data:data});
			}
		});
    });
    
    
    
    
    
    
});

